技术背景 无论是Windows平台还是Linux,多路播放诉求非常普遍,比如针对智慧工地、展馆、教育等宏观场景下的摄像头展示,关于RTSP或RTMP直播播放器开发需要注意的点,可参考之前博客,总的来说有以下一些点 低延迟:大多数RTSP的播放都面向直播场景,所以,如果延迟过大,比如监控行业,小偷都走了,客户端才看到,或者别人已经按过门铃几秒,主人才看到图像,严重影响体验,所以,低延迟是衡量一个好的RTSP播放器非常重要的指标 H.265的播放和录制:除了H.264,还需要支持H.265,目前市面上的RTSP H.265摄像头越来越多,支持H.265的RTSP播放器迫在眉睫,此外,单纯的播放H.265还不够,还需要可以能把H.265 异常状态处理:如播放的过程中,断网、网络抖动、来电话、切后台后返回等各种场景的处理。 代码实现 本文以大牛直播SDK(官方)的Linux平台为例,介绍下RTMP或RTSP流多路播放集成。 总结 多路RTMP或RTSP播放,涉及到性能和多路之间音视频同步、长时间播放稳定性等问题,Linux平台可参考的资料比较少,可选的方案比较少,感兴趣的可酌情参考。
背景 国产操作系统多为以Linux为基础二次开发的操作系统。 而2020年对Windows7服务支持的终止再一次推动了国产系统的发展。 工信部对此表示,将继续加大力度,支持Linux的国产操作系统的研发和应用,并希望用户可以使用国产操作系统。 国产操作系统|Linux下RTMP|RTSP直播播放 在发布国产操作系统|Linux平台的RTMP|RTSP直播播放SDK之前,大牛直播SDK(官方)的直播播放SDK无需赘述,采用自研内核框架 本次发布的可用于国产操作系统和Linux上的的RTMP|RTSP直播播放SDK, 视频绘制使用XLib相关库实现, 音频输出使用PulseAudio和Alsa Lib实现,除了常规功能如实时静音、快照、 |Linux下的RTMP、RTSP直播播放,经实际测试,延迟和Windows平台一样,毫秒级,随着国产操作系统在无纸化同屏等行业的推进,越来越多的场景需要这样一款稳定性高延迟低的RTMP|RTSP播放器
背景 尽管Windows平台有诸多优势,Linux平台的发展还是势不可挡,特别实在传统行业,然而Linux生态构建,总是差点意思,特别是有些常用的组件,本文基于已有的Linux平台RTSP、RTMP播放模块 ,构建Unity下的RTSP和RTMP直播播放。 先上个直观感受图,本视频以Windows平台采集秒表计时器窗体,然后编码打包传输到RTMP服务,Unity3D的Linux平台RTMP播放器拉流播放,整体延迟毫秒级。 ,Windows平台或者Android的比较多,用在Linux平台的少之又少,一方面Linux平台本身需求不大,另一方面,Linux平台这块,可参考的例程不多,实际上,如果已经完成Windows或Android 平台下的核心功能实现,再移植到Linux下,非常方便。
在发布国产操作系统|Linux平台的RTMP|RTSP直播播放SDK之前,大牛直播SDK在Windows、Android、iOS平台已经有了非常成熟的技术积累,功能齐全、稳定性高、超低延迟、超低资源占用 国产操作系统和Linux上的RTMP|RTSP直播播放模块,视频绘制使用XLib相关库实现, 音频输出使用PulseAudio和Alsa Lib,除了常规功能如实时静音、快照、buffer time设定 、网络自动重连等,RTMP支持扩展H265播放, RTSP也支持H265播放。 Linux原生的RTSP、RTMP播放模块这里我们不做赘述,本文主要讲的是如何在Linux平台构建Unity下的RTSP和RTMP低延迟直播播放。 平台下Unity RTMP、RTSP直播播放器大概的实现参考,随着国产操作系统的推进,Linux下RTMP、RTSP高质量的播放器需求越来越大,Unity下,可以实现和Windows、Android等平台统一开发管理
而2020年对Windows7服务支持的终止再一次推动了国产系统的发展。工信部对此表示,将继续加大力度,支持Linux的国产操作系统的研发和应用,并希望用户可以使用国产操作系统。 技术实现 顺势而为,在发布arm64架构的国产操作系统|Linux平台的RTMP|RTSP直播播放SDK之前,大牛直播SDK(官方)的直播播放SDK用一句比较流行的广告语叫遥遥领先,我们更是在前几年已经发布了 本次发布的可用于国产操作系统和Linux上的的RTMP|RTSP直播播放SDK, video输出基于X协议,audio输出采用PulseAudio和Alsa Lib实现。 除了常规功能如实时静音、快照、buffer time设定、网络自动重连等,RTMP支持扩展H265播放(支持Enhanced RTMP H.265播放), RTSP也支持H265播放。 |Linux下的RTMP、RTSP直播播放,延迟依然毫秒级,随着国产操作系统在传统行业的推进,越来越多的场景需要高稳定性高延迟低的RTMP|RTSP播放器,本文抛砖引玉,感兴趣的开发者可以跟我单独探讨。
技术背景我们在做RTSP、RTMP直播播放器的时候,有个比较重要的功能,就是拉流端实时录像,包括设置单个录像文件大小、文件前缀、audio转AAC、只录制视频或只录制音频、开始录像、停止录像事件状态回调等 我们录像模块,覆盖了RTMP、轻量级RTSP服务、RTSP|RTMP播放端录像,平台覆盖了Windows、Linux、Android、iOS,主要功能设计如下: [拉流]支持拉取RTSP流录像; [拉流 ]支持拉取RTMP流录像; [推流端录像]支持RTMP|RTSP推送端同步录像; [轻量级RTSP服务录像]支持轻量级RTSP服务SDK同步录像; [推流端录像实时暂停/恢复]支持推送端录像过程中实时暂停录像 、恢复录像; [逻辑分离]大牛直播录像SDK不同于普通录像接口,更智能,和推送、播放、转发、内置轻量级RTSP服务SDK功能完全分离,支持随时录像; [url切换]在录像过程中,支持切换不同URL,如两个 、RTMP播放端录像,我们的设计,是播放和录像分离,可以只录像或只播放,如果同时录像和播放,只需要一个拉流实例来完成。
技术背景好多开发者在播放RTSP或RTMP流的时候,特别是多路播放的时候,希望能试试调节单个视频画面的声音(静音或放大缩小音量),常见的实时调节播放音量可以通过以下方式实现:利用操作系统的音频控制在某些情况下 ,我们可能无法直接通过播放器控制音量,这时候,可以使用操作系统的全局音频控制来调节RTSP或RTMP播放器的音量。 利用播放模块自带的音量调节控制一个功能完善的RTSP或RTMP播放器,一般自带实时静音或实时音量调节,如果支持这种模式,就非常方便,可以只条件播放器的volume,不影响系统的音量。 跨平台使用操作系统支持:可在 Windows、macOS、Linux 等多个主流操作系统上运行。无论你使用哪种操作系统,都可以享受到 VLC 带来的强大播放功能。 (可达150-300ms延迟)的RTSP、RTMP播放器,以下是其主要功能列表:播放协议支持: 广泛的流媒体协议:支持 RTMP、RTSP 等主流直播流媒体协议,可播放相应协议的直播视频流,适用于多种直播场景
技术背景 实际上,我们在2015年做Android平台RTSP、RTMP播放模块的时候,第一版就支持了多实例播放,因为SDK设计比较灵活,做个简单的player实例封装即可实现多实例播放(Android 技术实现 废话不多说,先上图: 我们针对的功能展示,主要是播放和录像这块,先说播放: /* * SmartPlayer.java * Author: daniusdk.com * Created 1 : 0); //设置RTSP超时时间 int rtsp_timeout = 10; lib_player_.SmartPlayerSetRTSPTimeout(handle, rtsp_timeout ); //设置RTSP TCP/UDP模式自动切换 int is_auto_switch_tcp_udp = 1; lib_player_.SmartPlayerSetRTSPAutoSwitchTcpUdp 、录像的演示,除此之外,大牛直播SDK的RTSP、RTMP播放器海康实现播放缓冲设置、软硬解码设置、实时快照、实时音量调节、实时解码后数据回调等。
技术背景好多开发者拿到大牛直播SDK的Android平台RTSP、RTMP播放模块,基本上不看说明,测试后,就直接集成到自己系统了。 从高效率的角度,磨刀不误砍柴工,在模块集成之前,还是希望开发者能了解播放器集成的一些前置条件,少走弯路,尽快完成RTSP、RTMP低延迟播放能力构建。 前提条件 官方测试版:如需在测试阶段,做系统集成验证,可使用官方测试APP名称,不然会提示license验证失败,无法正常使用; 授权版:已拿到授权license key和授权库,使用授权的APP名称 RTMP/RTSP url开始播放SmartPlayerStartPlay开始播放RTSP/RTMP流停止播放SmartPlayerStopPlay停止播放RTSP/RTMP流关闭播放实例SmartPlayerClose 结束时必须调用close接口释放资源功能支持音频:AAC/Speex(RTMP)/PCMA/PCMU;视频:H.264、H.265;播放协议:RTSP|RTMP;支持纯音频、纯视频、音视频播放;支持多实例播放
2.4.4 特定机型硬解码检测 如系统用于特定机型环境下,特别是多路播放场景,需用到硬解码的话,可以用以下两组接口检测系统是否支持硬解。 注:在软解性能满足系统需求的前提下,一般建议优先使用软解。 URL NT_SP_SetURL:支持rtsp/rtmp/本地FLV文件(全路径)。 2.4.10 RTMP/RTSP播放参数设置 具体可参照Demo源码里面InitCommonSDKParam(): 2.4.10.1 播放前可选设置接口 NT_SP_SetBuffer:设置视频播放缓冲 NT_SP_StartPlay 开始播放RTMP或RTSP流数据。 2.4.17 停止播放 NT_SP_StopPlay 停止播放RTMP或RTSP流数据。 2.4.18 关闭播放实例 NT_SP_Close 调用Close接口后,player handler置空。
好多开发者问我们,Unity环境下,除了RTSP或RTMP的播放,如果有录像诉求,怎么实现?实际上录像相对播放来说,更简单一些,因为不涉及到绘制,只要拉流下来数据,直接写mp4文件就好了。 本文以大牛直播SDK的Windows平台为例,大概介绍下如何实现Unity环境下的录制,Linux、Android、iOS平台实现也类似,都是原生接口,然后对接下就好:图片开始录像因为涉及到可能同时录制多路的场景 ,直接调用播放接口就好了。 NTSmartPlayerSDK.NT_SP_Close(videoctrl[sel].player_handle_); videoctrl[sel].player_handle_ = IntPtr.Zero; }}以上是Unity平台RTMP 或RTSP播放端录像相关接口设计和调用实例,感兴趣的开发者可以参考。
好多开发者在QT环境下实现RTMP或RTSP播放时,首先考虑到的是集成VLC,集成后,却发现VLC在延迟、断网重连、稳定性等各个方面不尽人意,无法满足上线环境需求。 本文以调用大牛直播SDK(官方)的Windows平台播放端SDK为例,介绍下如何在QT下实现低延迟的RTMP|RTSP播放器,废话不多说,先上图: QTPlayer.png 大牛直播SDK有MFC的demo ,调用了OpenPlayerHandle(),检查系统是不是支持特定机型硬解码,通过调用Open()接口,获取播放实例,然后进行播放前的参数设置,比如网络状态event回调、视频宽高回调、设置buffer time、RTSP的TCP-UDP模式,默认播放音量等,具体实现如下: bool player_wrapper::OpenPlayerHandle(const std::string& url, bool 、RTSP播放的基本流程,感兴趣的开发者可酌情参考。
我们在实现Windows平台RTSP播放器或RTMP播放器的时候,需要考虑的点很多,比如多实例设计、多绘制模式兼容、软硬解码支持、快照、RTSP下TCP-UDP自动切换等,以下就其中几个方面,做个大概的探讨 特定机型硬解码 Windows平台硬解码,主要适用于性能偏弱的PC端,或者有多路播放诉求的场景,一般建议在软解性能没问题的情况下,尽量软解,具体处理如下,先检测系统是否支持硬解,如果支持,再做硬解设置, 这样的好处在于如果系统不支持硬解,可以继续软解播放,具体设置如下,在调用NT_SP_Open()之前,做检测,因为NT_SP_Open()每个句柄对应一个player实例,多个实例只需要做一次判断即可: 实时快照 实时快照功能不表,是一个好的RTSP播放器和RTMP播放器必备的功能,实时快照是把解码后的yuv数据重新编码成png,所以有一定的CPU消耗,不建议过于频繁操作,具体实现如下: 和RTMP播放器设计过程中的其他点,做更进一步的探讨,谢谢大家的关注。
好多开发者在做Windows平台特别是单屏多画面显示时,希望像监控摄像机一样,可以在播放画面添加OSD台标,以实现字符叠加效果,大多开发者可很轻松的实现以上效果,针对此,本文以大牛直播SDK (Github )的Windows平台demo为例,简单介绍下具体实现: Windows平台RTMP播放器、RTSP播放器C++ demo Windows平台C++的demo,以录像过程为例,动态在左上角显示个闪动的图标 data_.swap(buffer); } bitmap.UnlockBits(&locked_bitmapData); } return logo_image; } Windows平台RTMP 播放器、RTSP播放器C# demo Windows平台C#的demo,添加了“设置台标”选择框,在player窗口左上角显示“叠加字符展示”,具体内容、坐标可自定义,具体效果如下: 添加osd.png
技术背景我们在做Windows平台RTMP和RTSP播放模块对接的时候,有开发者需要在wpf下调用,如果要在wpf下使用,只需要参考C#的对接demo即可,唯一不同的是,视频流数据显示的话,要么通过控件模式 ,要么可以让RTMP、RTSP播放模块回调rgb数据上来,在wpf直接绘制即可。 播放器为例,我们实现的功能如下,如不单独说明,系Windows、Linux、Android、iOS全平台支持:[支持播放协议]高稳定、超低延迟、业内首屈一指的RTSP直播播放器SDK; [多实例播放]支持多实例播放 ; [事件回调]支持网络状态、buffer状态等回调; [视频格式]支持H.265、H.264,此外,还支持RTSP MJPEG播放; [音频格式]支持AAC/PCMA/PCMU; [H.264/H.265 模式设置]支持RTSP TCP/UDP模式设置; [RTSP TCP/UDP自动切换]支持RTSP TCP、UDP模式自动切换; [RTSP超时设置]支持RTSP超时时间设置,单位:秒; [RTSP 401
技术背景大牛直播SDK自2015年发布RTSP、RTMP直播播放模块,迭代从未停止,SmartPlayer功能强大、性能强劲、高稳定、超低延迟、超低资源占用。 无需赘述,全自研内核,行业内一致认可的跨平台RTSP、RTMP直播播放器。本文以iOS平台为例,介绍下如何集成RTSP、RTMP播放模块。 (添加后台播放权限):功能支持iOS端,RTMP|RTSP直播播放,我们设计实现的功能如下:音频:AAC/PCMA/PCMU/SPEEX(RTMP);视频:H.264;播放协议:RTMP或RTSP;支持纯音频 url开始播放SmartPlayerStart开始播放RTSP/RTMP流停止播放SmartPlayerStop停止播放RTSP/RTMP流销毁播放实例SmartPlayerUnInitPlayer结束时必须调用 由于设备和系统比较单一,优先考虑硬解码,除了基础播放外,我们还实现了实时快照、实时录像、实时回调YUV数据、实时音量调节等,实际体验下来,iOS平台RTMP和RTSP,可以轻松毫秒级。
跨平台一致性:一套接口,多端跑具身智能和低空经济项目很少只有一个平台: 前端:Android Pad / 工控机 / Windows 上位机 / iOS 控制端; 中心:Linux / 国产化系统 / 大牛直播SDK 的 RTSP/RTMP 播放器模块,本来就按“四端统一 + 国产化适配”的套路走: Windows / Linux / Android / iOS 四端 SDK; 可在 Unity3D 、头显、嵌入式里集成; 针对国产 CPU + 国产 OS(UOS、麒麟等)做过长期适配。 五、具身智能场景:RTSP/RTMP 播放器在“动作系统”里的位置站在具身智能的视角,我们可以把系统拆成四层: 感知层(Perception) 摄像头、雷达、IMU、编码器等; 视频在这里就是“第一感知通道 控制台/监控端 Windows/Linux 上位机:集成大牛直播SDK 的 RTSP/RTMP 播放器; Android 控制平板、iOS 终端:嵌入移动端 SDK; Unity3D/VR 头显:
因此,构建在国产操作系统与 ARM64 芯片上的 RTMP/RTSP 低延迟播放器技术,不仅是技术适配,更是保障国家数字底座安全可信的关键一环。 因此,大牛直播SDK选择将 流媒体播放能力率先迁移至国产 OS + ARM64 体系,正是面对现实痛点做出的关键突破: 工程上最复杂 行业上最需要 落地上最有价值尤其是对 RTSP / RTMP 的深度优化 ➡ 已在统信、麒麟等国产系统环境完成适配测试3)面向专网业务的网络稳定性 支持 RTSP / RTMP 两大行业常用协议 网络异常时支持自动恢复 可调缓冲时长提高弱网环境容忍度 追帧策略可增强画面连续性 五、多路 RTSP/RTMP 播放器 Demo:架构与源码说明为了验证上述能力在国产 ARM64 平台上的稳定性,我们实现了一个 多实例低延迟播放器 Demo,支持: 多路流同时播放 自适应窗口布局 RTSP/RTMP播放、静音、截图、分辨率回调等满足安防/工控前端显示能力要求平台支持多款国产 Linux 发行版(X11)适应主流国产化部署环境集成方式so库 + C/C++接口文档 + Demo示例便于快速对接现有系统配置指引缓冲
摘要本文详细介绍了在 Android 平台上集成 RTSP 和 RTMP 直播播放模块的技术背景、系统要求、准备工作、接口设计、功能支持以及接口调用流程。 三、准备工作在集成 RTSP/RTMP 播放模块之前,需要完成以下准备工作:1. SmartPlayerSetUrl:设置需要播放或录像的 RTMP/RTSP URL。 SmartPlayerStartPlay:开始播放 RTSP/RTMP 流。 五、功能支持 音频支持:AAC、Speex(RTMP)、PCMA、PCMU。 视频支持:H.264、H.265。 播放协议:RTSP、RTMP。 播放模式:支持纯音频、纯视频、音视频播放。 和 RTMP 直播播放模块的技术背景、系统要求、准备工作、接口设计、功能支持以及接口调用流程。
概述与优势1.1 SDK功能特性1.1.1 支持协议与格式 支持RTMP、RTSP协议,兼容H.265、H.264视频格式及AAC、PCMA等音频格式,满足多样化播放需求。 开启RTSP TCP/UDP自动切换功能,使播放器能根据网络状况自动选择最优传输模式。 3.2 硬件解码与性能优化3.2.1 硬件解码应用 检测系统是否支持H.264和H.265的硬件解码功能,若支持则启用硬件解码,利用GPU计算能力,减少CPU负担,提高视频播放流畅度。 核心技术架构设计4.1 原生模块与Unity的高效交互大牛直播SDK的核心优势在于其原生模块(Windows/Linux/Android/iOS)直接处理流媒体协议解析、解码和网络优化,仅将解码后的YUV /RTMP播放器,适用于VR、安防、直播等高实时性场景。